package com.itheima.springboot_reggie.web.excetion;

import com.itheima.springboot_reggie.common.R;
import lombok.extern.log4j.Log4j;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.sql.SQLIntegrityConstraintViolationException;

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandle {

    /**
     *    统一的处理违反数据库约束的异常   / 全局的异常处理
     * @return
     */
    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)//处理 捕获什么异常
    public R doSQLIntegrityConstraintViolationException(SQLIntegrityConstraintViolationException exception){

        /**
         *  业务异常：  用户名不能重复
         */
        log.info("用户操作异常:违反了数据库约束异常,{}"+ exception.getMessage());
        //违反 唯一约束的关键字: Duplicate entry 'hanmeimei' for key'employee.idx_username'

        String msg = exception.getMessage(); //默认msg=exception.getMessage()
        if (exception.getMessage().contains(" Duplicate entry")){//当前错误信息包含这个违反唯一约束
            //若违反了唯一约束
            msg = "当前录入的数据已存在";
        }
        return R.error(msg); //返回错误信息（信息异常）
    }
}
